#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+5;
inline int read(){
	int x=0,f=1;char ch=getchar();
	while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
	while(isdigit(ch)){x=(x<<1)+(x<<3)+ch-48,ch=getchar();}
	return x*f;
}
int n,m,q,x[N],y[N],p[N],mx[N],s,t;
vector<int> e[N];
pair<int,int> pl[N];
bool flg;

int Find(int u,int sum,int fa){
	if(sum==-1) return 1;
	if(u==t) flg=1;
	sum=max(sum,mx[u]);
	for(int v:e[u]){
		if(v==fa) continue;
		sum=max(sum,Find(v,sum-1,u)-1);
	}
	for(int v:e[u]){
		if(v==fa) continue;
		Find(v,sum-1,u);
	}
	return sum;
}

signed main(){
	freopen("shu.in","r",stdin);
	freopen("shu.out","w",stdout);
	n=read(),m=read(),q=read();
	for(int u,v,i=1;i<n;i++){
		u=read(),v=read();
		e[u].push_back(v);
		e[v].push_back(u);
	}
	for(int i=1;i<=q;i++)
		x[i]=read(),y[i]=read(),p[i]=read();
	for(int c,d,i=1;i<=m;i++){
		c=read(),d=read();
		mx[c]=max(mx[c],d);
	}
	
	for(int i=1;i<=q;i++){
		flg=0;
		s=x[i],t=y[i];
		Find(s,p[i],0);
		flg?puts("YES"):puts("NO");
	}
	return 0;
}